#ifndef __BASIC_GEOMETRY_H__
#define __BASIC_GEOMETRY_H__

#pragma once

#include "RenderObject.h"
#include "SceneNode.h"

namespace Nezha
{

	/** basic animatable geometry. */
	class GRAPHICS_ENTRY BasicGeometry : public SceneObject, public RenderObject
	{
	public:
			virtual RenderObjectType getROType() const
			{
				return ROT_ANIMATED;
			}

			virtual int getSceneObjectType() const
			{
				return SOT_GEOMETRY;
			}

			virtual const _string& getROName() const
			{
				return getName();
			}

			// override
			virtual RenderObject* getRenderObject();

			virtual SceneNode* getSpatial() { return mBindedSceneNode; }

			virtual void update(float dt);

			// TODO animation states

			// TODO bind creation to manager.

			BasicGeometry(const _string& name, RenderMesh* rm);

	protected:
		SceneNode* mBindedSceneNode;
	};

}//end namespace Nezha

#endif //end __BASIC_GEOMETRY_H__